package com.patsnap.data.npd.dw.schema.ads.journal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.patsnap.data.npd.dw.handler.NoNullFastjsonTypeHandler;
import com.patsnap.data.npd.dw.schema.base.BaseNonePatentDto;
import com.patsnap.one.etl.table.meta.annotation.FieldMeta;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.List;

import static java.sql.JDBCType.LONGVARCHAR;
import static java.sql.JDBCType.VARCHAR;

@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "ads_journal", autoResultMap = true)
public class AdsJournal extends BaseNonePatentDto {

    private static final long serialVersionUID = 1L;

    /**
     * journal_id主键
     */
    @TableId("journal_id")
    @FieldMeta(fieldName = "journal_id", jdbcType = VARCHAR, required = true, length = 36, comment = "journal_id主键")
    private String journalId;

    /**
     * 期刊标准名
     */
    @TableField("title")
    @FieldMeta(fieldName = "title", jdbcType = LONGVARCHAR, required = false, length = 2147483647, comment = "期刊标准名")
    private String title;

    /**
     * 期刊标准缩写名
     */
    @TableField("abbr_name")
    @FieldMeta(fieldName = "abbr_name", jdbcType = VARCHAR, required = false, length = 300, comment = "期刊标准缩写名")
    private String abbrName;

    /**
     * 期刊标准issn(最新）
     */
    @TableField("issn")
    @FieldMeta(fieldName = "issn", jdbcType = VARCHAR, required = true, length = 9, comment = "期刊标准issn(最新）")
    private String issn;

    /**
     * 期刊标准eissn(最新）
     */
    @TableField("eissn")
    @FieldMeta(fieldName = "eissn", jdbcType = VARCHAR, required = false, length = 9, comment = "期刊标准eissn(最新）")
    private String eissn;

    /**
     * 期刊别名
     */
    @TableField(value = "alias_titles", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "alias_titles", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊别名")
    private List<String> aliasTitles;

    /**
     * 期刊相关issn集合
     */
    @TableField(value = "issn_list", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "issn_list", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊相关issn集合")
    private List<String> issnList;

    /**
     * 期刊相关nlm_id集合
     */
    @TableField(value = "nlm_id", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "nlm_id", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊相关nlm_id集合")
    private List<String> nlmId;

    /**
     * 期刊相关scopus_id集合
     */
    @TableField(value = "scopus_id", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "scopus_id", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊相关scopus_id集合")
    private List<String> scopusId;

    /**
     * 期刊相关coden集合
     */
    @TableField(value = "coden", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "coden", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊相关coden集合")
    private List<String> coden;

    /**
     * 期刊相关mag_jr_id集合
     */
    @TableField(value = "mag_jr_id", typeHandler = NoNullFastjsonTypeHandler.class)
    @FieldMeta(fieldName = "mag_jr_id", jdbcType = LONGVARCHAR, required = false, length = 1073741824, comment = "期刊相关mag_jr_id集合")
    private List<String> magJrId;
}
